/*
* @Author: 窦子滨<zibin_5257@163.com>
* @Date: 2019-04-15 13:46
 */

//对数据进行初始化
package main

import (
	"lanfengye/base"
	"lanfengye/base/common"
	"encoding/json"
	"flag"
	"sync"
)

type Config struct {
	Http struct {
		//TCP监听信息
		Listen string
	}
	//mysql数据库结构体
	Mysql struct {
		Host     string `json:"host"`
		DbName   string `json:"dbName"`   //数据库名称
		UserName string `json:"userName"` //数据库用户名
		PassWord string `json:"password"` //数据库密码
		Prefix   string `json:"prefix"`   //数据库表前缀
	}
}

var (
	config = &Config{}
	C      = config
	Log    base.LogIF
	//定时任务
	c    *ScheduleManager
	sql  = base.NewMysql()
	task *sync.Pool
)

func init() {
	logPath := common.Path + "logs" + common.OSSEP + "logTask.log"
	configPath := common.Path + "configTask.ini"
	parseCmdlineOpt(&configPath, &logPath)
	Log = base.NewLog(logPath, 0, true)

	err := base.NewConfig(config, configPath)
	Log.EnableFuncCallDepth(true)
	if err != nil {
		panic(err)
	}
	mysqlConfig, _ := json.Marshal(config.Mysql)
	err = sql.Init(string(mysqlConfig))
	if err != nil {
		Log.Error(err)
	}
	c = NewScheduleManager()

	task = &sync.Pool{
		New: func() interface{} {
			return NewTask()
		},
	}
}

func parseCmdlineOpt(configPath *string, logPath *string) {
	flag.StringVar(configPath, "config", *configPath, "配置文件路径")
	flag.StringVar(logPath, "log", *logPath, "日志文件路径")
	flag.Parse()
}
